\documentclass[9pt,journal,compsoc]{IEEEtran}
\usepackage[pdftex]{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,float} %para las imagenes jpg, float con H pone las imagenes donde corresponde
\usepackage{amssymb}

% declare the path(s) where your graphic files are
%\graphicspath{{../pdf/}{../jpeg/}}
% and their extensions so you won't have to specify these with
% every instance of \includegraphics
% \DeclareGraphicsExtensions{.pdf,.jpeg,.png}

\begin{document}
\raggedbottom 
\title{Resguardado de Información en Imágenes en Escala de Grises.}
\author{Santiago D. Costarelli, Juan M. Gimenez y Federico Gonzalez. \\
Unidad Académica: UNL FICH - Ingeniería Informática. \\
Cátedra: Procesamiento Digital de Imágenes.
\IEEEcompsocitemizethanks{\IEEEcompsocthanksitem Santiago D. Costarelli
E-mail: santi.costarelli@gmail.com
\IEEEcompsocthanksitem Juan M. Gimenez
E-mail: jmarcelogimenez@gmail.com
\IEEEcompsocthanksitem Federico Gonzalez
E-mail: elfedeg.83@gmail.com}}

\IEEEcompsoctitleabstractindextext{
\begin{abstract}
En este trabajo se presenta una implementación para un algoritmo de ocultamiento de datos sobre imágenes 
en escalas de grises mediante encriptación y esteganografía. Para ello se implementan las técnicas de \emph{XOR encryption} 
para encriptación, y los métodos DCT (\emph{transformada coseno discreta}) y LSB (\emph{plano de bits menos significativo}) 
para esteganografía. El objetivo de resguardar el mensaje en dominios de la transformada es el de obtener robustez ante 
un esquema de compresión JPG sobre la imágen resultante.
Los resultados de las pruebas corroborran las hipótesis formuladas, pero presentan problemas ante la presencia de ruido en el canal de transmisión.

\end{abstract}

\begin{IEEEkeywords}
Esteganografía, DCT, encriptación, LSB, XOR.
\end{IEEEkeywords}
}

\maketitle

%\IEEEdisplaynotcompsoctitleabstractindextext
%\IEEEpeerreviewmaketitle

\section{Introducción}
\IEEEPARstart{D}esde los inicios de la era de las tecnologías de información, fue
de primera urgencia la tarea de codificar cierta información sobre algún medio con
el objetivo de que si este último llegara a caer en manos equivocadas, la información
contenida no fuera develada sin un proceso posterior de estudio del medio. 

Conforme las tecnologías avanzaron, así lo hizo paralelamente su estudio, que finalmente
hoy conocemos como \emph{Teoría de Información}, de ella se valen toda clase de
métodos y es por ende la clave para todo algoritmo de codificación y encriptación, como es el caso pertinente.

Básicamente, se intentan utilizar los datos redundantes en una imagen digital con el objetivo
de insertar información sobre esta, de tal manera que la misma permanezca oculta a terceros. La materia que estudia la situación se denomina esteganografía.
Existen distintos métodos esteganográficos digitales, clasificables según el dominio en el cual es aplicada la técnica: espaciales y frecuenciales.  
Los métodos espaciales, como el LSB\footnote{Least Significant Bit}, permiten mayor capacidad de almacenamiento, pero presentan alta sensibilidad a ruidos, 
compresiones y transformaciones geométricas. En cambio, utilizando métodos frecuenciales se obtienen menores capacidades de almacenamiento, pero se 
logra mayor robustez ante los demás problemas, especialmente ante la compresión [1]. 

Para obtener mayor seguridad en el envío de la información, la esteganografía puede ser complementada con técnicas de criptografía. La esencia de la 
criptografía es la de cifrar mensajes de manera que sean ilegibles a terceros. He aquí la diferencia, ya que no se busca ocultar el mensaje, sino 
simplemente, tornarlo ilegible [1].

En el presente trabajo se utilizarán distintas herramientas comprendidas en cada una de las materias, con LSB
sobre la DCT como método de inserción de información y XOR como método de encriptación.

\section{Desarrollo}
\IEEEPARstart{I}nicialmente se tiene una imagen a la cual se quiere incorporarle un mensaje oculto. Esta es 
subdividida en bloques no solapados de 8x8 con pixeles, sobre los cuales se aplicará DCT con el objetivo
de obtener el contenido frecuencial de la sección pertinente. Esta subdivisión se debe a que, aplicar DCT sobre la imagen completa y luego escatimar
en los coeficientes seleccionados produce a un efecto de degradación, en general más notorio, que aplicar
DCT sobre regiones pequeñas de la imagen y verificar si en dicha región podemos lograr una reducción del
número de coeficientes DCT necesarios para una correcta representacion frecuencial de la misma.

Formalmente la DCT se define como

\begin{gather}
	\begin{split}
    F(u,v) = \frac{1}{4}C(u)C(v)\sum_{x=0}^{7}\sum_{y=0}^{7}f(x,y)*&\cos\frac{(2x+1)u\pi}{16} \\
    \cos\frac{(2y+1)v\pi}{16}.
	\end{split}
\end{gather}

Y su inversa viene dada por

\begin{gather}
	\begin{split}
    f(x,y) = \frac{1}{4}\sum_{u=0}^{7}\sum_{v=0}^{7}F(u,v)*&\cos\frac{(2x+1)u\pi}{16} \\
    \cos\frac{(2y+1)v\pi}{16}.
	\end{split}
\end{gather}

donde

\begin{gather}
	\begin{split}
    C(u),C(v) = \frac{1}{\sqrt{2}},\ \  \forall u,v = 0 \\
    C(u),C(v) = 1, \ \  e.o.c.
	\end{split}
\end{gather}

Una vez aplicada la DCT a todos los bloques de la imagen se comienza un proceso de verificación
de energía de los mismos para corroborar la aptitud de incorporación de información en caso de superar
cierto umbral preestablecido por el usuario. La ecuación utilizada para el cálculo de energía
tiene la forma

\begin{equation}
  E = \sum_{i,j} \left\|c\right\|^2, \forall i,j \in{0,1,...,7},\ \ (i,j) \not= 0
\end{equation}

donde se tiene que $ c_{i,j} $ es el coeficiente \emph{ij}-ésimo de un bloque en particular. Como se
puede observar, la componete DC no forma parte del cálculo de energía.

  Una vez conocida la energía, se compara con el valor umbral de energía preestablecido; en caso de superarlo se \emph{procesa} el
bloque para añadirle información, en caso contrario no se hace nada y se continua con el bloque siguiente.
El énfasis sobre la palabra procesa se hace específicamente porque
la metodología seguida no es tan lineal como se nombra en la anterior oración, puesto que existe
una validación de energía al aplicar el/los caracter/es sobre el bloque para verificar que luego, en el
proceso de recuperación del texto de la imagen, al desarmar la imagen esteganografiada, el bloque
contenga la suficiente energía como para pasar el umbral. De otra forma, si al codificar un caracter
sobre el bloque causa una reducción de energía, tal que esta no supera el umbral, no se codifica sobre
el mismo, puesto que finalmente, en el proceso de recuperación, no se tendrá en cuenta dicho bloque
para aplicar el método.

Una vez que se verifica que el bloque contiene la suficiente energía, se procede con la división del bloque con la matriz de cuantificación elemento a elemento. Esto se realiza principalemente por dos motivos: el primero es que, mediante
una selección manual de coeficientes, se priorizan aquellos coeficientes que representan las componentes
de bajas frecuencias de la DCT perteneciente a un bloque en particular; el segundo tiene que ver con un soporte de
compresión compatible con JPG, que está directamente relacionado con DCT y con la aplicación que se
presenta. La matriz de cuantificación Q que se ha utilizado, es conocida como \emph{Matriz de Losheller} y se presenta a continuación [4]:

\[ \left( 
\begin{array}{cccccccc}
16 & 11 & 10 & 16 & 24 & 40 & 51 & 61 \\
12 & 12 & 14 & 19 & 26 & 58 & 60 & 55 \\
14 & 13 & 16 & 24 & 40 & 57 & 69 & 56 \\
14 & 17 & 22 & 29 & 51 & 87 & 80 & 64 \\
18 & 22 & 37 & 56 & 68 & 109 & 103 & 77 \\
24 & 35 & 55 & 64 & 81 & 104 & 113 & 92 \\
49 & 64 & 78 & 87 & 103 & 121 & 120 & 101 \\
72 & 92 & 95 & 98 & 112 & 100 & 103 & 99
\end{array} 
\right)\] 

Una vez realizado lo anterior, se procede a un escaneo en forma de zig-zag, como lo muestra la Figura \ref{F1},  conformando un vector
de coeficientes que presenta la particularidad de que en sus primeras posiciones contiene aquellos valores que
representan a las componentes de bajas frecuencias y entre sus últimos a los de alta frecuencia.
De esta manera, se especifica mediante un número entero la cantidad de componentes que se desea conservar (esto obviamente teniendo en cuenta los rangos con lo que se trabaja).

\begin {figure}[h]
	\begin{center}
		\includegraphics[height=6cm,width=6cm]{zigzag.png}
    \caption{Recorrido del método de Zig-Zag.}
    \label{F1}
	\end{center}
\end{figure}

Sobre el resultado del método zigzag, que es un vector, se toman una cierta cantidad de coeficientes
y sobre su parte entera se procede a la inserción del texto mediante el método conocido como LSB, el cual sustituye 
el último bit de la representacion binaria de los valores de los coeficientes, por los bits que luego formarán la cadena binaria que representará el caracter insertado. Así, para insertar en un bloque el caracter "A", es necesario utilizar 8 coeficientes (típicamente los 8 primeros del vector zigzag), insertando en cada uno 1 bit perteneciente al código ASCII de dicho caracter. Cabe aclarar, que es posible utilizar otras codificaciones más allá de la ASCII, y esto último es lo que se ha optado en el presente trabajo, en el cual se generó un propio código de 5 bits (32 caracteres). Debido a esta reducción de longitud de palabra se logra obtener una ganancia en capacidad. 

A fin de lograr un mayor resguardado de la información,  el texto se inserta ya encriptado, esto es, previamente a la inserción se aplica una encriptación del tipo XOR. 
El método consiste en tener una máscara predefinida por el usuario de 5 bits que se aplica a cada caracter mediante la operación lógica antes mencionada. 
Esta operación se aplica tanto en el
proceso de esteganografía directa cuando se ubica el texto en la imagen, como en la esteganografía
inversa, cuando se recupera el texto de la imagen y se asegura la correcta recuperación si y solo si
no ocurrieron cambios de bits durante alguno de los procesos del método que pueda modificar el valor
resultante del XOR.
Este método de encriptación es de seguridad baja-media teniendo en cuenta dos aspectos. En primer lugar debido al tamaño de la máscara, y en segundo dada la misma operación lógica, que es muy simple de realizar con una computadora, permitiendo que ataques de fuerza bruta recuperen la información sin mayores esfuerzos.

Un diagrama de flujo de la aplicación completa para el esquema hacia delante se observa en la Figura~\ref{F2}.

\begin {figure}[h]
	\begin{center}
		\includegraphics[height=6cm,width=8cm]{dflujo.pdf} 
    \caption{Diagrama de flujo hacia delante.}
    \label{F2}
	\end{center}
\end{figure} 

Esquema hacia delante en el sentido de que es el proceso de encriptación y ocultación de texto
sobre la imagen, el proceso inverso consta de leer la imagen por bloques, aplicarles la DCT y sobre aquellos
que superen el umbral, leer los bits correspondientes a la ocultación, desencriptar y guardar 
los caracteres recuperados sobre un arreglo. Finalmente se muestra el texto completo. El esquema completo hacia
atrás se observa en la Figura~\ref{F3}.

\begin {figure}[h]
	\begin{center}
		\includegraphics[height=3cm,width=7cm]{dflujoi.pdf} 
    \caption{Diagrama de flujo hacias atrás.}
    \label{F3}
	\end{center}
\end{figure} 

\section{Experimentos y Resultados}

Para los experimentos se procedió a correr el algoritmo con una base de datos de 6 imágenes, aplicando un
umbral de energía de 200 para cada bloque DCT y luego aplicando un criterio subjetivo tanto para la
calidad visual de la imagen esteganografiada, como para el texto una vez recuperado. Las escalas 
utilizadas para indicar el comportamiento del algoritmo se presentan en la Tabla \ref{T1}.

\begin{table}[!hbt]
\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
 & Excelente & Buena & Mala \\
\hline
Imagen & Imperceptible & Aceptable & Perceptible \\
\hline
Texto & Legible & Poco legible & Ilegible \\
\hline
\end{tabular}
\caption{\label{T1} Criterios.}
\end{center}
\end{table}


\subsection{Canales ideales}

Se denomina \emph{canal ideal} a un medio de transmisión que no introduce ruidos y cuya capacidad es infinita, por lo tanto no es necesaria
la aplicación de ningún método de compresión.

Para las pruebas se eligieron textos de distinta índole y se presentaron a distintos lectores con el
objetivo que lean el mensaje retornado por la aplicación y, en base a la escala presentada anteriormente
determinen a cual corresponde. Luego, tomando la moda de las observaciones, se obtienen los datos que
se presentan en la Tabla ~\ref{T2}, en donde por motivos de presentación se ha preestablecido utilizar
las siguientes siglas:

\begin{enumerate}
\item \emph{CV}: Calidad Visual.
\item \emph{TR}: Calidad Texto Recuperado.
\item \emph{CA}: Caracteres almacenados.
\end{enumerate}

\begin{table}[!hbt]
\begin{center}
\begin{tabular}{||c|c|c|c|c||}
\hline
\hline
Imagen & ECM(origImg,estImg) & CV & TR & CA \\
\hline
Lena & 0.0836367 & Imp & Leg & 170 \\
\hline
Hinchada & 0.583316 & Imp & Leg & 839 \\
\hline
Automóvil & 0.074414 & Imp & Leg & 842 \\
\hline
Gato & 0.0344237 & Imp & Leg & 92 \\
\hline
Canales & 0.237146 & Imp & Leg & 349 \\
\hline
Camaleón & 0.0733293 & Imp & Leg & 157 \\
\hline
\hline
\end{tabular}
\caption{\label{T2} Canal Ideal.}
\end{center}
\end{table}

%\vspace{.5cm}

De los resultados se observa que el algoritmo en general se comporta de manera correcta puesto que tanto la
imagen resultante como el texto recuperado presentan una calidad que parece convencer a los usuarios de prueba. 
 Además, no se ha comentado con anterioridad en el presente, pero previo de la aplicación
de la DCT se ha aplicado una reducción de -128 a cada pixel, y dado a redondeos, truncamientos e inserciones
de texto sobre la imagen, cuando se volvía para guardar la imagen podía presentarse algún valor de p.e.
-129 con lo cual el rango no era devuelto al original, y por ende la imagen resultante presentaba
p.e. pixeles oscuros en zonas blancas, o pixeles blancos en zonas oscuras; esto se corrigió controlando
los rangos dinámicos.

A continuación se presentan algunas imágenes de pruebas y sus respectivas imágenes diferencia con la correspondiente modificada por el
algoritmo propuesto, tanto para automóvil (Figuras ~\ref{F10} y ~\ref{F11}), como para cameraman (Figuras ~\ref{F12} y ~\ref{F13}),
en donde se observa que en todos los casos, como es lógico, las principales diferencias
se concentran sobre las secciones de las imágenes con mayor contenido frecuencial.
 
\begin {figure}[H]
	\begin{center}
		\includegraphics[height=4cm,width=6cm]{mercedes.pdf} 
    \caption{\label{F10} Automóvil - imagen original}
	\end{center}
\end{figure} 

\begin {figure}[H]
	\begin{center}
		\includegraphics[height=4cm,width=6cm]{auto.pdf} 
    \caption{\label{F11} Automóvil diferencia.}
	\end{center}
\end{figure} 

\begin {figure}[H]
	\begin{center}
		\includegraphics[height=5cm,width=5cm]{cameraman.pdf} 
    \caption{\label{F12} Cameraman - imagen original.}
	\end{center}
\end{figure} 

\begin {figure}[H]
	\begin{center}
		\includegraphics[height=5cm,width=5cm]{cam.pdf} 
    \caption{\label{F13} Cameraman diferencia.}
	\end{center}
\end{figure} 

\subsection{Canales no-ideales}

Se han realizado pruebas del algorítmo comprimiendo la imagen esteganografiada con un esquema JPG. 
Las imágenes resultantes tienen una tasa de compresión aproximada de $ C_R = 5 $, sin embargo, a la hora de reconstruír el mensaje, 
se obtienen resultados similares a los reflejados por la tabla para canales ideales.

Por otro lado, se han realizado pruebas añadiendo ruido gaussiano a las imágenes generadas, simulando de esta manera, la influencia de un canal ruidoso. Ante cada prueba se utilizó la imagen \emph{cameraman} con umbral 100, y se hace variar el coeficiente $\sigma$ que es proporcional al nivel de ruido insertado.
Los resultados fueron los que se presentan en la Tabla ~\ref{T3}.

\begin{table}[!hbt]
\begin{center}
\begin{tabular}{||c|c|c|c|c||}
\hline
\hline
$\sigma$ & CV & TR \\
\hline
0 & Imperceptible & Legible \\
\hline
0.25 & Imperceptible & Legible \\
\hline
0.5 & Imperceptible & Legible \\
\hline
0.75 & Imperceptible & Poco Legible \\
\hline
1 & Aceptable & Ilegible \\
\hline
2 & Perceptible & Ilegible \\
\hline
\hline
\end{tabular}
\caption{\label{T3} Canal Ruidoso.}
\end{center}
\end{table}

\section{Discusiones y Conclusiones}

El método utilizado permite el envío de información en imágenes en escalas de grises. El proceso 
llevado a cabo en dominios de la transformada, lo hace robusto ante la compresión JPG, sin embargo, 
esta técnica no soluciona la alta subceptibilidad ante el ruido que sufren varias de las técnicas 
esteganográficas. Mas allá de esto, con las actuales tecnologías de red, en donde la tasa de errores 
de bits es aproximadamente $ 10^{-6} $ [errores/bits transmitidos] para un canal ruidoso, la calidad del mensaje transmitido 
responde únicamente al problema de los desbordes de valores previamente mencionado.

Una forma de asegurar la legilibilidad del mensaje transmitido en cualquier medio sería la de incluír 
codificación Hamming a cada caracter enviado (agregar $ 2d-1 $ bits, donde d es la distancia de palabra), 
con lo cual el receptor podría reconstruir completamente el mensaje en caso de errores de d bits. 
Sin embargo, no se garantiza un envío sin fallos ya que, como se observó en las pruebas, si el canal fuera 
ruidoso en exceso la información frecuencial también resultaría altamente afectada, con lo que aplicar un 
código de detección de errores por caracter resultaría demasiado costoso, por ende se podría concluir 
que el método presentado no presentaría las ventajas necesarias para ambientes de este tipo.

Respecto a la intercepción del mensaje por un tercero, la encriptación XOR no es demasiado 
robusta debido al pequeño tamaño de la longitud de palabra utilizado, y cualquier ataque simple de 
fuerza bruta permite decodificar el texto. Aquí se debería utilizar algún otro método que garantize 
mayor seguridad y que no esté limitado a la longitud de palabra. 

Se concluye entonces que el método puede ser utilizado en un ambiente de seguridad media, en donde 
el medio de comunicación sea robusto al ruido, y se requieran envíos de pequeño-mediano tamaño, un 
ejemplo de esto podría ser el envío de e-mails. En dichas condiciones se asegura la absoluta legilibilidad 
en el receptor, garantizando que en una posible intercepción de dicho mensaje será ilegible por el uso 
de la encriptación y un tamaño moderado del archivo al permitir compresión JPG.

% if have a single appendix:
%\appendix[Proof of the Zonklar Equations]
% or
%\appendix  % for no appendix heading
% do not use \section anymore after \appendix, only \section*
% is possibly needed

% use appendices with more than one appendix
% then use \section to start each appendix
% you must declare a \section before using any
% \subsection or using \label (\appendices by itself
% starts a section numbered zero.)
%

%\appendices
%\section{Proof of the First Zonklar Equation}
%Appendix one text goes here.

% you can choose not to have a title for an appendix
% if you want by leaving the argument blank
%\section{}
%Appendix two text goes here.


\renewcommand{\refname}{Bibliografía}
\begin{thebibliography}{99}
\bibitem{EDCT} Carlos L. Velasco Bautista, Julio C. López Hernández, Mariko Nakano Miyatake, Héctor M. Pérez Meana
  \emph{Esteganografía en una imagen digital en el dominio DCT}, Científica, octubre-diciembre, año/vol. 11, 
  número 004. Instituto Politécnico Nacional, Distrito Federal, México, pp. 169-176
\bibitem{DS} Niels Provos, Peter Honeyman \emph{Detecting Steganographic Content on the Internet}, CITI (Center for Information Technology Integration), University of Michigan, EEUU.
\bibitem{PDI} R. González and R. Woods, \emph{Digital Image Processing}, 2nd. Edition, Prentice-Hall, 2002.
\bibitem{WiKi} http://es.wikipedia.org/wiki/Joint\_Photographic\_Experts\_Group, versión 25-05-10.
\end{thebibliography}

%\begin{IEEEbiography}{Michael Shell}
%Biography text here.
%\end{IEEEbiography}
% if you will not have a photo at all:
%\begin{IEEEbiographynophoto}{John Doe}
%Biography text here.
%\end{IEEEbiographynophoto}
% insert where needed to balance the two columns on the last page with
% biographies
%\newpage
%\begin{IEEEbiographynophoto}{Jane Doe}
%Biography text here.
%\end{IEEEbiographynophoto}

\end{document}


